package com.tydic.product.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.tydic.borderer.domain.bo.AgainHistoryByPageBo;
import com.tydic.common.web.domain.bo.DetailBo;
import com.tydic.product.domain.Product;
import com.tydic.product.domain.ProductCost;
import com.tydic.product.domain.bo.ProductBo;
import com.tydic.product.domain.bo.ProductByPageBo;
import com.tydic.product.domain.bo.ProductGroupBo;
import com.tydic.product.domain.bo.StatusBo;
import com.tydic.product.domain.vo.ProductCalculateVo;
import com.tydic.product.domain.vo.ProductCategoryVo;
import com.tydic.product.domain.vo.ProductVo;

import java.util.List;
import java.util.Map;

public interface IProductService {


    int deleteByParentProductId(String parentProductId);

    List<Product> findByParentProductId(String parentProductId);

    List<ProductVo> findVoByParentProductId(String parentProductId);

    void auditAble(StatusBo request);

    int getNeedHandler();

    List<ProductCategoryVo> queryProductType();

    Map<String, List<ProductCost>> getProductCostMap();

    ProductCalculateVo calculate(String price, String realPrice);

    void publishProduct(ProductBo request);

    void publishGroupProduct(ProductGroupBo request);

    Product saveGroupProduct(ProductGroupBo request);

    void editProduct(ProductBo productBo);

    void publishGroupProduct(String id);

    void saleAble(StatusBo request);

    void delete(DetailBo request);

    ProductVo getProduct(DetailBo request);

    Page<ProductVo> findPage(ProductByPageBo request);

    List<ProductVo> getChildren(DetailBo request);

    Page<ProductVo> getAgentProductHistory(AgainHistoryByPageBo request);

    Product checkProductExist(String id);

    Product get(String id);

}
